package com.suray.basic.wcs.plc.enums;


import com.suray.basic.wcs.utils.IBaseEnum;

import java.io.Serializable;

/**
 * Plc设备枚举类
 */
public enum PlcDeviceType implements IBaseEnum<Serializable> {
    /**
     * 松下提升机
     */
    PANASONIC_LIFT(2, "松下提升机"),
    /**
     * 外形检测
     */
    SHAPE_DETECTION(3, "普通外形检测"),
    /**
     * 系统
     */
    SYSTEM(4, "系统"),
    /**
     * 链条工位
     */
    CHAIN_STATION(5, "链条工位"),
    /**
     * 称重
     */
    WEIGHT(6, "称重"),
    /**
     * 充电桩
     */
    CHARGER(7, "充电桩"),
    /**
     * 西门子提升机
     */
    SIEMENS_HOIST(9, "西门子提升机"),
    /**
     * 扫码
     */
    SCANNER(10, "扫码"),
    /**
     * 拆码盘机工位
     */
    DSIHSTATION(11, "拆码盘机工位"),
    /**
     * 移栽机工位
     */
    TRANS_PLANTER_STATION(12, "移载机工位"),
    /**
     * 自动门
     */
    AUTOMATIC_DOOR(13, "自动门"),
    /**
     * 多摩川提升机
     */
    TAMAGAWA_LIFTER(14, "多摩川"),

    /**
     * 自卸式提升机
     */
    AUTOMATIC_LIFTER(15,"自卸式提升机"),

    /**
     * 按钮
     */
    BUTTON(16,"输送线上的按钮"),

    /**
     * 自动升降机
     */
    AUTO_HOIST(17, "自动升降机"),

    /**
     * 牙叉升降机
     */
    TOOTH_HOIST(18, "牙叉升降机"),

    /**
     * 自动横移机
     */
    AUTO_TRAVERSING(19, "自动横移机"),

    /**
     * 移裁机
     */
    TRANS_PLANTER(20, "移裁机"),

    /**
     * 单体输送线
     */
    MONOMER_CONVEYOR(21, "单体输送线"),

    /**
     * 单体输送线+外形检测
     */
    SHAPE_CONVEYOR(22, "单体输送线+外形检测"),

    /**
     * 单体外形检测
     */
    SHAPE(32, "单体外形检测"),

    /**
     * 单体扫码
     */
    SCAN(42, "单体扫码"),

    /**
     * 单体称重
     */
    SINGLE_WEIGHT(43, "单体称重"),

    /**
     * 提升机伺服 60-69
     */
    LIFTER_BASE(60, "提升机基础设备"),
    LIFTER_SYSTEM(61, "提升机系统"),
    LIFTER_STATION(62, "提升机工位"),
    LIFTER_LEFT_STATION(63, "提升机左工位"),
    LIFTER_RIGHT_STATION(64, "提升机右工位"),

    /**
     * 翻转机
     */
    TURNOVER_MACHINE(66,"翻转机"),
    /**
     * 翻转机自动门系统
     */
    TURNOVER_AUTOMATIC_SYSTEM(67, "翻转机自动门系统"),
    /**
     * 单体自动门
     */
    SINGLE_AUTO_DOOR(68, "自动门2"),

    /**
     * 单体拆叠盘机
     */
    FOLDING_MACHINE(69, "单体拆叠盘机"),
    /**
     * 货叉式提升机
     */
    FORK_LIFTER(100,"货叉式提升机"),

    /**
     * 货叉臂式提升机
     */
    FORK_ARM_LIFTER(101,"货叉臂式提升机")
    ;

    private int plcDeviceType;
    private String description;

    PlcDeviceType(int plcDeviceType, String description) {
        this.plcDeviceType = plcDeviceType;
        this.description = description;
    }

    @Override
    public String toString() {
        return description;
    }


    public static PlcDeviceType parsePlcDeviceType(int plcDeviceType) {
        PlcDeviceType[] Types = PlcDeviceType.values();
        for (PlcDeviceType type : Types) {
            if (type.plcDeviceType == plcDeviceType) {
                return type;
            }
        }
        throw new IllegalArgumentException("设备类型参数错误:" + plcDeviceType);
    }

    public int getTypeNum() {

        return plcDeviceType;
    }


    @Override
    public String getDescription() {
        return description;
    }

    @Override
    public Integer getVal() {
        return plcDeviceType;
    }

    @Override
    public Serializable getValue() {
        return plcDeviceType;
    }
}
